package com.itcam.web.mapper;

import com.itcam.web.manager.CacheManager;
import com.itcam.web.vertx.MainVerticle;
import io.vertx.core.Verticle;
import io.vertx.core.Vertx;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

/**
 * VertxManager 类负责初始化和部署 Vert.x 垂直实例。
 * 该类使用 Spring 的 @Component 注解，作为 Spring 组件被容器管理。
 * 在 Bean 初始化完成后，会自动调用 init 方法来启动 Vert.x 并部署垂直实例。
 */
@Component
public class VertxManager {

    /**
     * 注入 CacheManager 实例，用于在 Vert.x 垂直实例中使用缓存功能。
     */
    @Resource
    private CacheManager cacheManager;

    /**
     * 该方法在 Bean 初始化完成后自动调用，用于初始化 Vert.x 并部署垂直实例。
     * 使用 @PostConstruct 注解确保在依赖注入完成后执行此方法。
     */
    @PostConstruct
    public void init() {
        // 创建一个新的 Vert.x 实例
        Vertx vertx = Vertx.vertx();
        // 创建一个 MainVerticle 实例，并传入 CacheManager 实例
        Verticle myVerticle = new MainVerticle(cacheManager);
        // 部署 MainVerticle 实例到 Vert.x 中
        vertx.deployVerticle(myVerticle);
    }

}

